﻿var zChar = new Array(' ', '(', ')', '-', '.');
var maxphonelength = 14;
var phonevalue1;
var phonevalue2;
var cursorposition;

function ParseForNumber1(object){
    phonevalue1 = ParseChar(object.value, zChar);
}
function ParseForNumber2(object){
    phonevalue2 = ParseChar(object.value, zChar);
}

function backspacerUP(object,e) { 
    if(e) {
        e = e;
    } else {
        e = window.event;
    }
    var keycode;
    if(e.which) {
        keycode = e.which;
    } else {
        keycode = e.keyCode;
    }

    ParseForNumber1(object);

    if(keycode >= 48) {
        ValidatePhone(object);
    }
}

function backspacerDOWN(object,e) { 
    if(e) {
        e = e;
    } else {
        e = window.event;
    }
    var keycode;
    if(e.which) {
        keycode = e.which;
    } else {
        keycode = e.keyCode;
    }
    ParseForNumber2(object);
} 

function GetCursorPosition(){

    var t1 = phonevalue1;
    var t2 = phonevalue2;
    var bool = false;
    for (var i = 0; i<t1.length; i++)
    {
        if (t1.substring(i,1) != t2.substring(i,1)) {
            if(!bool) {
                cursorposition = i;
                bool = true;
            }
        }
    }
}

function ValidatePhone(object) {

    var p = phonevalue1;

    p = p.replace(/[^\d]*/gi, "");

    if (p.length < 3) {
        object.value = p;
    } else {
        var pp;
        if(p.length==3){
            pp=p;
            var d4 = p.indexOf('(');
            var d5 = p.indexOf(')');
            if(d4==-1){
                pp="("+pp;
            }
            if(d5==-1){
                pp=pp+")";
            }
            object.value = pp;
        } else {
            var l30;
            var p30;
            var p31;
            if(p.length>3 && p.length < 7){
                p ="(" + p; 
                l30=p.length;
                p30=p.substring(0,4);
                p30 = p30 + ")";

                p31=p.substring(4,l30);
                pp=p30+p31;

                object.value = pp; 

            } else if(p.length >= 7){
                p ="(" + p; 
                l30=p.length;
                p30=p.substring(0,4);
                p30 = p30 + ")";

                p31=p.substring(4,l30);
                pp=p30+p31;

                var l40 = pp.length;
                var p40 = pp.substring(0,8);
                p40 = p40 + "-";

                var p41 = pp.substring(8,l40);
                var ppp = p40 + p41;

                object.value = ppp.substring(0, maxphonelength);
            }
        }
    }
    GetCursorPosition();

    if(cursorposition >= 0){
        if (cursorposition == 0) {
            cursorposition = 2;
        } else if (cursorposition <= 2) {
            cursorposition = cursorposition + 1;
        } else if (cursorposition <= 5) {
            cursorposition = cursorposition + 2;
        } else if (cursorposition == 6) {
            cursorposition = cursorposition + 2;
        } else if (cursorposition == 7) {
            cursorposition = cursorposition + 4;
            var e1 = object.value.indexOf(')');
            var e2 = object.value.indexOf('-');
            if (e1>-1 && e2>-1){
                if (e2-e1 == 4) {
                    cursorposition = cursorposition - 1;
                }
            }
        } else if (cursorposition < 11) {
            cursorposition = cursorposition + 3;
        } else if (cursorposition == 11) {
            cursorposition = cursorposition + 1;
        } else if (cursorposition >= 12) {
            cursorposition = cursorposition;
        }

        var txtRange = object.createTextRange();
        txtRange.moveStart( "character", cursorposition);
        txtRange.moveEnd( "character", cursorposition - object.value.length);
        txtRange.select();
    }

}

function ParseChar(sStr, sChar) {
    if (sChar.length == null) {
        zChar = new Array(sChar);
    } else zChar = sChar;
    var sNewStr;
    for (var i = 0; i < zChar.length; i++) {
        sNewStr = "";

        var iStart = 0;
        var iEnd = sStr.indexOf(sChar[i]);

        while (iEnd != -1) {
            sNewStr += sStr.substring(iStart, iEnd);
            iStart = iEnd + 1;
            iEnd = sStr.indexOf(sChar[i], iStart);
        }
        sNewStr += sStr.substring(sStr.lastIndexOf(sChar[i]) + 1, sStr.length);

        sStr = sNewStr;
    }

    return sNewStr;
}
